package com.zjff.mobiletwo.controller;

import com.zjff.mobiletwo.dao.ProductDao;
import com.zjff.mobiletwo.entity.Page;
import com.zjff.mobiletwo.entity.ProductEntity;
import com.zjff.mobiletwo.entity.ResultEntity;
import com.zjff.mobiletwo.service.ProductService;
import com.zjff.mobiletwo.service.util.TextUtils;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@CrossOrigin//跨域
@RestController//遵循RestFul
@RequestMapping("v2/Product/")
public class ProductController {
    @Resource
    ProductService ProductService;
    @Resource
    ProductDao ProductDao;

    /**
     * 获取商品信息
     * @return JSON
     */
    @GetMapping("getProductList")
    private String getProductList(){
        return ProductService.getProductList() ;
    }

    /**
     *根据id条件查询商品分页信息
     * @return JSON
     */
    @GetMapping("getCateList")
    private String getCateList(){return ProductService.getCateList() ;}

    /**
     * 通过商品id获取商品信息
     * @param id 商品id
     * @return JSON
     */
    @GetMapping("getProductById")
    private  String getProductById(
            @RequestParam(value = "id",defaultValue = "-1") int id){
        if (id==-1){
            return ResultEntity.Fail(-10007,"上传失败!");
        }
        return ProductService.getProductById(id);
    }

    /**
     * 根据id获取商品图片
     * @param id 商品id
     * @return JSON
     */
    @GetMapping("getImgListById")
    private  String getImgListById(@RequestParam(value = "id",defaultValue = "-1") int id){
        if (id==-1){
            return ResultEntity.Fail(-10007,"上传失败!");
        }
        return ProductService.getImgListById(id);
    }

    /**
     * 根据商品名进行商品的模糊查询
     * @param name 商品名称
     * @return
     */
    @GetMapping("search")
    public Object findByName(@RequestParam(value = "name") String name){
        Map<String,Object>map= new HashMap<>();
        if (TextUtils.Isempty(name)){
            return ProductService.getProductList();
        }else {
            List<ProductEntity>data=ProductService.findByName(name);
            if(data!=null&&data.size()>0){
                map.put("code",0);
                map.put("msg","数据查询成功");
                map.put("data",data);
            }else{
                map.put("code",102);
                map.put("msg","请求参数不能为空");
            }
        }
        return map;
    }

    /**
     * 通过familyid进行分页查询(查询映射多对一关系)
     * @param pageIndex 页数
     * @param pageSize 每页的数量
     * @param familyid familyid
     * @return JSON
     */
    @GetMapping("getpagebyfamilyid")
    public String page(@RequestParam(defaultValue = "1") Integer pageIndex,
                       @RequestParam(defaultValue = "5") Integer pageSize,
                       @RequestParam(value = "familyid",defaultValue = "-1") int familyid){
        if (familyid==-1){
            return ResultEntity.Fail(-10007,"上传失败!");
        }
        //判断非空：
        if(pageIndex == null){//若pageNum为空
            pageIndex = 1;   //设置默认当前页为1
        }
        if(pageIndex <= 0){  //若为负数
            pageIndex = 1;   //设置默认值为1
        }
        if(pageSize == null){ //若页面大小为空
            pageSize = 20;    //设置默认每页显示的数据数
        }
        pageIndex=familyid;
        Page Page = new Page();
        Integer pageBegin = (pageIndex-1) * pageSize;
        //当前页码
        Page.setPageIndex(pageIndex);
        //总数据条数
        Page.setSize(ProductDao.findSize());
        //每页数据条数
        Page.setPageSize(pageSize);
        //总页数
        Integer div = Page.getSize()/pageSize;
        Integer pageTotal = Page.getSize() % pageSize == 0 ? div : div + 1;
        Page.setPageTotal(pageTotal);
        //查询到的数据
        Page.setData(ProductDao.findData(pageBegin,pageSize));
        return ResultEntity.Success(null,Page,0,"获取成功!");
    }

    /**
     * 分页查询
     * @param pageIndex
     * @param pageSize
     * @return
     */
    @GetMapping("getpage")
    public String page(@RequestParam(defaultValue = "1") Integer pageIndex,
                       @RequestParam(defaultValue = "20") Integer pageSize){
        //判断非空：
        if(pageIndex == null){//若pageNum为空
            pageIndex = 1;   //设置默认当前页为1
        }
        if(pageIndex <= 0){  //若为负数
            pageIndex = 1;   //设置默认值为1
        }
        if(pageSize == null){ //若页面大小为空
            pageSize = 20;    //设置默认每页显示的数据数
        }
        Page Page = new Page();
        Integer pageBegin = (pageIndex-1) * pageSize;
        //当前页码
        Page.setPageIndex(pageIndex);
        //总数据条数
        Page.setSize(ProductDao.findSize());
        //每页数据条数
        Page.setPageSize(pageSize);
        //总页数
        Integer div = Page.getSize()/pageSize;
        Integer pageTotal = Page.getSize() % pageSize == 0 ? div : div + 1;
        Page.setPageTotal(pageTotal);
        //查询到的数据
        Page.setData(ProductDao.findData(pageBegin,pageSize));
        return ResultEntity.Success(null,Page,0,"获取成功!");
    }

    /**
     * 商品左侧分类栏
     * @return
     */
    @GetMapping("getList")
    private String getList(){return ProductService.getList() ;}
    /**
     * 通过familyid获取商品信息
     * @param familyid familyid
     * @return JSON
     */
    @GetMapping("getProductListByFamilId")
    private  String getProductListByFamilId(
            @RequestParam(value = "familyid",defaultValue = "-1") int familyid){
        if (familyid==-1){
            return ResultEntity.Fail(-10007,"上传失败!");
        }
        return ProductService.getProductListByFamilId(familyid);
    }

}
